#include <stdio.h>
#include <string.h>

// 联合体 union _union 结构
// 定义 union _union u 变量, 则 u 的成员变量共享同一块内存
// 共享的内存大小由成员变量中最大内存占用成员决定, 比如联合体 union _union 的内存大小(4个字节)就由 _int 决定
// 联合体的值由最后一次修改决定
union _union {
    char _char;
    short _short;
    int _int;
};

// 0x 00 00 00 00
//       |
//       V
// 0x 40 30 20 10
//       |
//       V
// 0x 60 50 20 10
//       |
//       V
// 0x 70 30 20 10
//
// 小端的存储方式
// printf 最终的结果为 0x 10 20 50 70


// 0x 00 00 00 00
//       |
//       V
// 0x 10 20 30 40
//       |
//       V
// 0x 50 60 30 40
//       |
//       V
// 0x 70 60 30 40
//
// 大段的存储方式
// printf 最终的结果为 0x 70 60 30 40

int main() {
    union _union u;

    u._int = 0x10203040;
    u._short = 0x5060;
    u._char = 0x70;

    // 大小端的判断
    printf("%p", u._int); // 0x10205070 小端
    // 0x70503040 大端
    return 0;
}